/**
 *  Name:            Dennis Jasch
 *  Matrikel-Nummer: 167300
 *  Projekt-Name:    Aufgabe2
 *  Paket-Name:      logik
 *  Datei-Name:      TeilnehmerListe.java
 *  Erstelldatum:    22.11.2006 13:08:08
 */
package logik;

import daten.TeilnehmendePerson;

/**
 * Klasse zur Verwaltung einer Liste von Objekten der Klasse TeilnehmendePerson
 * @author Dennis Jasch
 * @version 0.2 vom 30.11.2006
 */
public class TeilnehmerListe
  {
  /**
   * Privates Array zur Speicherung der TeilnehmendePerson Objekte.
   */
  private TeilnehmendePerson[] teilnehmerListe;
  /**
   * Private Variable zur Speicherung der Anzahl der TeilnehmendePerson Objekten in der Liste.
   */
  private int teilnehmerAnzahl;

  /**
   * Teilnehmeranzahl wird mit 0 initialisiert.
   */
  public TeilnehmerListe()
    {
    this.teilnehmerListe = new TeilnehmendePerson[0];
    this.teilnehmerAnzahl = 0;
    }
  
  /**
   * Methode zur Sortierung der internen Teilnehmerliste
   */
  private void sortiereListe()
    {
    boolean sortiert = true;
    do
      {
      sortiert = true;
      for(int i = 0; i < this.getTeilnehmerAnzahl() - 1; i++)
        {
        if(this.teilnehmerListe[i].compareTo(this.teilnehmerListe[i + 1]) < 0)
          {
          sortiert = false;
          TeilnehmendePerson tempPerson = this.teilnehmerListe[i];
          this.teilnehmerListe[i] = this.teilnehmerListe[i + 1];
          this.teilnehmerListe[i + 1] = tempPerson;
          }
        }
      }
    while(!sortiert);
    }
  
  /**
   * Methode zum Hinzufuegen eines Teilnehmers zur Teilnehmerliste
   * @param teilnehmendePerson Teilnehmer, der hinzugefuegt werden soll.
   */
  public void teilnehmerHinzufuegen(TeilnehmendePerson teilnehmendePerson)
    {
    TeilnehmendePerson[] tempListe = this.teilnehmerListe;
    this.teilnehmerListe = new TeilnehmendePerson[this.getTeilnehmerAnzahl() + 1];
    for(int i = 0;i < this.getTeilnehmerAnzahl(); i++)
      {
      this.teilnehmerListe[i] = tempListe[i];
      }
    this.teilnehmerListe[this.getTeilnehmerAnzahl()] = teilnehmendePerson;
    this.teilnehmerAnzahl++;
    }
  
  /**
   * Methode zur Rueckgabe der Teilnehmerliste in sortierter Form
   * @return Sortiertes Array aller Teilnehmer der Liste.
   */
  public TeilnehmendePerson[] getTeilnehmerArray()
    {
    this.sortiereListe();
    return this.teilnehmerListe;
    }
  
  /**
   * Methode zur Rueckgabe der Teilnehmeranzahl der Liste.
   * @return Anzahl der Teilnehmer in der Liste.
   */
  public int getTeilnehmerAnzahl()
    {
    return this.teilnehmerAnzahl;
    }
  }